package com.yzt.zhuju.mvp;

import android.content.Context;

import com.yzt.zhuju.rx.LifecycleTransformer;


/**
 * <pre>
 *     author : TK
 *     desc   : 基类契约
 * </pre>
 */
public interface Contract {
    interface IPresenter<V extends IView> {
        /**
         * 依附
         *
         * @param view
         */
        void attach(V view);

        /**
         * 分离
         */
        void detach();
    }

    interface IView {
        /**
         * 获取上下文
         *
         * @return
         */
        Context getContext();

        /**
         * 关闭
         */
        void close();

        /**
         * 立即关闭
         */
        void closeImmediately();

        /**
         * 显示吐司
         *
         * @param tip
         */
        void showToast(String tip);

        /**
         * 加载中Loading
         *
         * @param tip
         */
        void showLoadingDialog(String tip);

        /**
         * 隐藏加载中Loading
         */
        void dismissLoadingDialog();

        /**
         * 显示错误吐司
         *
         * @param tip
         */
        void showErrorToast(String tip);

        /**
         * 关联生命周期
         *
         * @param event
         * @param <T>
         * @return
         */
        <T> LifecycleTransformer<T> bindLifecycle(int event);

        /**
         * 结束时销毁
         *
         * @param <T>
         * @return
         */
        <T> LifecycleTransformer<T> bindOnDestroy();
    }

}
